﻿using System.Collections.Generic;
using Neturion.Dados;
using Neturion.IRepositorios;
using Neturion.Repositorios;
using Neturion.Utils;

namespace Neturion.Negocios
{
    public class NegocioProcedimentoSituacaoTramite
    {
        private IRepositorioProcedimentoSituacaoTramite _repositorioProcedimentoSituacaoTramite;

        public NegocioProcedimentoSituacaoTramite()
        {
            _repositorioProcedimentoSituacaoTramite = new RepositorioProcedimentoSituacaoTramite();
        }

        public ProcedimentoSituacaoTramite Inserir(ProcedimentoSituacaoTramite procedimentoSituacaoTramite)
        {
            procedimentoSituacaoTramite.Codigo = GeradorCodigo.GerarCodigo(1);
            procedimentoSituacaoTramite.Codigo += (_repositorioProcedimentoSituacaoTramite.ObterUltimoIdCodigoInteiro() + 1).ToString();
            procedimentoSituacaoTramite.Codigo += GeradorCodigo.GerarCodigo(1, procedimentoSituacaoTramite.Codigo);
            return _repositorioProcedimentoSituacaoTramite.Inserir(procedimentoSituacaoTramite);
        }

        public ProcedimentoSituacaoTramite Atualizar(ProcedimentoSituacaoTramite procedimentoSituacaoTramite)
        {
            return _repositorioProcedimentoSituacaoTramite.Atualizar(procedimentoSituacaoTramite);
        }

        public void Excluir(ProcedimentoSituacaoTramite procedimentoSituacaoTramite)
        {
            ProcedimentoSituacaoTramite procedimentoSituacaoTramiteTmp = ObterPorId(procedimentoSituacaoTramite.ProcedimentoSituacaoTramiteId);
            _repositorioProcedimentoSituacaoTramite.Excluir(procedimentoSituacaoTramiteTmp);
        }

        public IList<ProcedimentoSituacaoTramite> ObterTodos()
        {
            return _repositorioProcedimentoSituacaoTramite.ObterTodos();
        }

        public ProcedimentoSituacaoTramite ObterPorId(int id)
        {
            return _repositorioProcedimentoSituacaoTramite.ObterPorId(id);
        }

        public ProcedimentoSituacaoTramite ObterPorCodigo(string codigo, Usuario usuarioPermissao)
        {
            return _repositorioProcedimentoSituacaoTramite.ObterPorCodigo(codigo);
        }
    }
}